package com.zhuanzhuan.hero.user.facade;

import com.bj58.spat.scf.server.contract.annotation.ServiceContract;
import com.bj58.youpin.common.rpc.result.Result;
import com.zhuanzhuan.hero.user.dto.backend.*;
import com.zhuanzhuan.hero.user.vo.PageResultWrapper;
import com.zhuanzhuan.hero.user.vo.backend.QueryAuditListVO;
import com.zhuanzhuan.hero.user.vo.backend.QueryBusinessLabelListVO;
import com.zhuanzhuan.hero.user.vo.backend.QueryBusinessLabelRelateVO;
import com.zhuanzhuan.hero.user.vo.backend.QueryUserListVO;
import com.zhuanzhuan.hero.user.vo.label.BatchRelateBusinessLabelVO;
import com.zhuanzhuan.hero.user.vo.label.LabelInfoVO;

import java.util.List;

/**
 * @ClassName IManagementMackendFacade
 * @Description  管理后台接口
 * @Author hanjunjun
 * @Date 2024/6/18 16:15
 */
@ServiceContract
public interface IManagementBackendFacade {

    /**
     * 运营后台-分页查询用户列表
     *
     * @param queryUserListDTO
     * @return com.bj58.youpin.common.rpc.result.Result<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<PageResultWrapper<QueryUserListVO>> pageUser(QueryUserListDTO queryUserListDTO);

    /**
     * 运营后台-分页查询运营标签
     *
     * @param queryBusinessLabelListDTO
     * @return com.bj58.youpin.common.rpc.result.Result<com.zhaunzhuan.hero.user.vo.PageResultWrapper<com.zhaunzhuan.hero.user.vo.backend.QueryBusinessLabelListVO>>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<PageResultWrapper<QueryBusinessLabelListVO>> pageBusinessLabel(
        QueryBusinessLabelListDTO queryBusinessLabelListDTO);

    /**
     * 运营后台-分页查询标签关联用户列表
     *
     * @param queryBusinessLabelRelateDTO
     * @return QueryBusinessLabelRelateVO
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<PageResultWrapper<QueryBusinessLabelRelateVO>> pageBusinessLabelRelate(
        QueryBusinessLabelRelateDTO queryBusinessLabelRelateDTO);

    /**
     * 运营后台-取消标签关联
     *
     * @param cancelBusinessLabelRelateDTO
     * @return com.bj58.youpin.common.rpc.result.Result<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<Void> cancelBusinessLabelRelate(CancelBusinessLabelRelateDTO cancelBusinessLabelRelateDTO);

    /**
     * 运营后台-标签批量关联给用户
     *
     * @param relateBusinessLabelDTO
     * @return com.bj58.youpin.common.rpc.result.Result<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<BatchRelateBusinessLabelVO> batchRelateBusinessLabel(RelateBusinessLabelDTO relateBusinessLabelDTO);

    /**
     * 运营后台-标签上架、下架
     *
     * @param switchStateBusinessLabelDTO
     * @return com.bj58.youpin.common.rpc.result.Result<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<Void> switchStateBusinessLabel(SwitchStateBusinessLabelDTO switchStateBusinessLabelDTO);

    /**
     * 运营后台-创建运营标签
     *
     * @param createBusinessLabelDTO
     * @return com.bj58.youpin.common.rpc.result.Result<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<Void> createBusinessLabel(CreateBusinessLabelDTO createBusinessLabelDTO);

    /**
     * 运营后台-分页查询审核记录列表
     *
     * @param queryAuditListDTO
     * @return com.bj58.youpin.common.rpc.result.Result<com.zhaunzhuan.hero.user.vo.PageResultWrapper<com.zhaunzhuan.hero.user.vo.backend.QueryAuditListVO>>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<PageResultWrapper<QueryAuditListVO>> pageAuditRecord(QueryAuditListDTO queryAuditListDTO);

    /**
     * 运营后台-审核操作
     *
     * @param auditOperateDTO
     * @return com.bj58.youpin.common.rpc.result.Result<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    Result<Void> operateAudit(AuditOperateDTO auditOperateDTO);

    /**
     * 运营后台-查询【内容分类】标签 第一级的
     *
     * @param
     * @return com.bj58.youpin.common.rpc.result.Result<java.util.List<com.zhuanzhuan.hero.user.vo.label.LabelInfoVO>>
     * @author  hanjunjun
     * @date 2024/7/5
     **/
    Result<List<LabelInfoVO>> queryContentCategoryLabels();

}
